import { LANG } from '@/utils/storageKey';

const state = {
  spinning: false,
  lang: localStorage.getItem(LANG) || 'zh-CN'
};
type IState = typeof state;

/*
  getters
  有时候我们需要从 store 中的 state 中派生出一些状态，例如对列表进行过滤并计数：
 */
const getters = {};

/*
  actions
  Action 类似于 mutation，不同在于：
  Action 提交的是 mutation，而不是直接变更状态。
  Action 可以包含任意异步操作。
 */
const actions = {};

/*
  mutations
  更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
 */
const mutations = {
  ['SET_SPINNING'](state: IState, val: boolean) {
    state.spinning = val;
  },
  ['SET_LANG'](state: IState, val: string) {
    state.lang = val;
  }
};
type IMutations = typeof mutations;

export { IState, IMutations };

export default {
  state,
  getters,
  actions,
  mutations
};
